const Controller = require("egg").Controller;

/**
 * @Controller 字典数据
 */
class SysDictDataController extends Controller {
  /**
   * 普通分页查询
   * @param {*} ctx
   */
  /**
   * @summary 字典数据表查询  
   * @description 字典数据表查询  
   * @Router get /system/dict/data/list
   * @request query string pageNum 页码 默认 1
   * @request query string pageSize 单页数量 默认 10
   * @response 200 SystemDictDataList 操作成功
   */
  async list(ctx) {
    ctx.body = await ctx.service.system.sysDictData.list(ctx.request.query);
    ctx.status = 200;
  }

  /**
   * 获取列表数据
   * @param {*} ctx
   */
  async allList(ctx) {
    ctx.body = await ctx.service.system.sysDictData.allList(ctx.request.query);
    ctx.status = 200;
  }

  /**
   * 删除
   * @param {*} ctx
   */
  /**
   * @summary 字典数据表删除  
   * @description 字典数据表删除  
   * @Router delete /system/dict/data/{dictCode}
   * @response 200   操作成功
   */
  async delete(ctx) {
    ctx.body = await ctx.service.system.sysDictData.delete(ctx.params.dictCode);
    ctx.status = 200;
  }

  /**
   * 更新
   * @param {*} ctx
   */
  /**
   * @summary 字典数据表修改  
   * @description 字典数据表修改  
   * @Router put /system/dict/data
   * @response 200   操作成功
   */
  async update(ctx) {
    ctx.body = await ctx.service.system.sysDictData.update(ctx.request.body);
    ctx.status = 200;
  }

  /**
   * 获取详情
   * @param {*} ctx
   */
  /**
   * @summary 字典数据表详情  
   * @description 字典数据表详情  
   * @Router get /system/dict/data/{dictCode}
   * @response 200   操作成功
   */
  async detail(ctx) {
    ctx.body = await ctx.service.system.sysDictData.detail(ctx.params.dictCode);
    ctx.status = 200;
  }

  /**
   * 创建
   * @param {*} ctx
   */
  /**
   * @summary 字典数据表新增  
   * @description 字典数据表新增  
   * @Router post /system/dict/data
   * @response 200   操作成功
   */
  async create(ctx) {
    ctx.body = await ctx.service.system.sysDictData.create(ctx.request.body);
    ctx.status = 200;
  }

  /**
   * @summary 字典数据表导出  
   * @description 字典数据表导出  
   * @Router post /system/dict/data/export
   * @response 200   操作成功
   */
  async downLoad(ctx) {
    let data = await ctx.service.system.sysDictData.allList(ctx.request.body);

    let downLoadModule = ctx.model.SysDictData.fieldRawAttributesMap;
    let columnData = [];
    for (var key in downLoadModule) {
      columnData.push({
        header: downLoadModule[key].comment,
        key: ctx.underlineToHump(key),
        width: 15,
      });
    }
    if (data.code == 200) {
      await ctx.service.exportExcel.publicDownLoad(columnData, data.data);
    } else {
      ctx.body = data;
      ctx.status = 200;
    }
  }
}

module.exports = SysDictDataController;
